iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Cloud Native

K8s上的機器人沙盒系列 第 1

Day 1|簡介:在 K8s 打造機器人沙盒

  • 分享至 

  • xImage
  •  

跟隨筆者的旅程,並在 Kubernetes上,以 Selkies-Project 打造 WebRTC 低延遲串流的 NVIDIA IsaacSim or IsaacLab 沙盒環境。最近需要架設遠端統,以便開發。如果能幫助到任何有類似需求的人,抑或是能夠遇到有經驗的人,指出筆者的設計缺陷或給予建議,那就再好不過了,共勉之!

為什麼要在 K8s 上跑機器人模擬?
機器人模擬(Isaac Sim/Isaac Lab)需要高效 GPU、穩定的即時串流,以及可重現、可擴張的環境。把它放上 Kubernetes 的好處:

  1. 雲原生彈性:以 Deployment/Job/Helm Chart 管理不同版本的場景、環境與任務。
  2. 資源調度:用 GPU Operator 與 nvidia.com/gpu 調度 GPU,避免手動分配、互搶。
  3. 低延遲遠端操作:藉由 Selkies(WebRTC + GStreamer + TURN)把模擬畫面直接推到瀏覽器,省去厚重客戶端。
  4. 團隊工作流:命名空間隔離、配額、網路策略、身分驗證與存取控管一站搞定。

本系列將從零開始,將一套可重現的「機器人沙盒平臺」搭建起來:使用者進到入口頁一鍵開啟 IsaacSim / IsaacLab Session → 透過瀏覽器操控與觀察 → 可記錄資料、匯出成果、回收資源。

  1. 以 Helm 一鍵部署的 Selkies + coturn + TURN-REST 與 Ingress + TLS。
  2. 可自動拉起 GPU Driver / Container Runtime / Device Plugin 的 NVIDIA GPU Operator。
  3. 以Sidecar 模式將 Selkies 與 Isaac Sim/Isaac Lab 封裝為同一個 Pod,支援 1080p60(或以上)低延遲串流。
  4. 觀測與告警(Prometheus + Grafana + DCGM Exporter + Loki)。

讀者對象與前置知識

  • 容器/Docker 基本經驗,想把模擬環境「雲原生化」。
  • 知道 Kubernetes 的基本物件(Pod/Service/Ingress/ConfigMap/Secret)。
  • 具備 Linux/網路基本操作與一點點 GPU 實務經驗更佳(非必要)。

參考環境

  1. Kubernetes 1.28+(kubeadm 或你熟悉的發行版皆可)CNI:Cilium 或 Calico(本文選用 Cilium 作示範)
  2. 節點:控制節點 3 台 & 工作節點若干
  3. 儲存:NFS 或 Ceph (規劃中)
  4. 網路:L2 或 L3 交換器若干(MetalLB/BGP 規劃中)、對外 Ingress & DNS 名稱
  5. 憑證:cert-manager + ACME(Let’s Encrypt)

30 天學習地圖

以下內容隨著系統規劃,可能會有更動

Week 1|地基:K8s、GPU、網路與安全

  1. 系列前言與架構藍圖(本篇)
  2. K8s 節點佈署(containerd、kubeadm)與 OS/GPU 基本調校
  3. CNI 選型:Cilium vs Calico,並安裝 Cilium(eBPF 與 Hubble 初探)
  4. 部署 NVIDIA GPU Operator(Driver/Runtime/Device Plugin/GFD)
  5. 儲存入門:NFS + PersistentVolumeClaim,準備 Isaac 資料與 Assets 目錄
  6. 邊界入口:Ingress Controller(NGINX)+ cert-manager + DNS 規劃
  7. 安全初探:Namespace、ResourceQuota、LimitRange、Pod Security 簡介

Week 2|Selkies × WebRTC × TURN:把畫面推進瀏覽器
8. Selkies 架構與 WebRTC 基礎:ICE / STUN / TURN / Codec 位元率與延遲
9. 部署 coturn + TURN-REST;webrtc-internals 驗證連通性
10. Helm 部署 Selkies(先跑一個 gl 樣板 App 驗證 GPU/串流)
11. Sidecar 模式:把 Selkies 掛到目標 App旁
12. 影像編碼調校:H.264 / VP9 / AV1、NVENC、解析度與 FPS 的平衡
13. Ingress 與 TURN 的拓樸擺位:公網/私網/多 NAT 的布署方式

Week 3|Isaac Sim/Isaac Lab 的容器化與可重現性
15. Isaac Sim(Headless/Streaming)容器化:映像、資料卷、環境變數
16. Isaac Lab 容器化:RL/IL 任務、Python 相依、CUDA/cuDNN 驗證
17. 把 Isaac + Selkies 放進同一個 Pod:範本 Chart 與 values.yaml
18. 觀測:DCGM Exporter + Prometheus + Grafana(GPU 使用率、溫度、功耗)
19. Logging:Loki + Promtail,集中收集 Isaac 與 Selkies 日誌
20. CI/CD 與 GitOps(規劃中):從推程式到自動佈署

Week 4|可擴張、多租戶、最佳化與故障排除
21. 多租戶最佳實務:Namespace 隔離、Quota、NetworkPolicy、Ingress Auth(OAuth2)
22. 調度與資源:nvidia.com/gpu、Time-Slicing、併排/獨占策略
23. 性能測試:延遲/抖動/FPS 與位元率;網路與 GPU 編碼瓶頸診斷
24. 進階網路:MetalLB(L2/BGP)與 Gateway API;在實體交換器上的考量
25. 遠端穿越:Cloudflare Tunnel/Tailscale 與自建 TURN 的取捨
26. 場景與資產管理:快取、版本化與資料集掛載
27. 穩定性與 SLO:健康狀態探測、PodDisruptionBudget、重啟策略
28. 常見故障排除:ICE 失敗、黑畫面、No GPU Device、Pod CrashLoopBackOff
29. 整合入口:建立「機器人沙盒目錄」頁,讓使用者一鍵開局
30. 最終回:成品展示 與 未來路線(多站點、混合雲、邊緣節點)

目標架構(概念圖)
[ 使用者瀏覽器 ]
│ HTTPS (TLS)

[ Ingress / Gateway ]


[ Selkies Service ] ──→ [ coturn / TURN-REST ] ──→ 公網/內網節點連通
│ ▲
│ WebRTC(ICE/DTLS/SRTP) │ REST Auth
▼ │
[ Pod: isaac-sandbox ]
├─ Container A: Isaac Sim / Isaac Lab(Headless/Streaming)
└─ Container B: Selkies(GStreamer 編解碼+Signaling)


[ GPU Node with NVIDIA GPU Operator ]

參考與延伸閱讀(官方文件)

  1. Selkies Project(官方站與 GitHub)

  2. IsaacSim說明

  3. IsaacLab說明

  4. Kubernetes 上的 NVIDIA GPU Operator

最後までお読みいただき、ありがとうございます。


下一篇
Day 2|用 kubeadm + containerd 建一套最小 K8S
系列文
K8s上的機器人沙盒2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言